package br.com.funaction.eventtcontrollerv2.controller;

import java.io.IOException;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import br.com.funaction.eventtcontrollerv2.entities.Anunciante;
import br.com.funaction.eventtcontrollerv2.entities.Anuncio;
import br.com.funaction.eventtcontrollerv2.entities.Franquia;
import br.com.funaction.eventtcontrollerv2.model.AnuncianteDAO;
import br.com.funaction.eventtcontrollerv2.model.AnuncioDAO;

@RequestScoped
@ManagedBean
public class VisualizarAnuncianteMB {

	Franquia franquia = new Franquia();
	FacesContext contexto = FacesContext.getCurrentInstance();
	private Date dataAtual = new Date();
	Anunciante anunciante = new Anunciante();
	List<Anunciante> listaTodosAnunciante;
	AnuncianteDAO anuncianteDAO = new AnuncianteDAO();
	Anuncio anuncio = new Anuncio();
	AnuncioDAO anuncioDAO = new AnuncioDAO();
	List<Anuncio> listaAnuncio;
	
	@PostConstruct
	public void init(){
		
		try{
			
			autenticacao();
			
		} catch(Exception e){
			
			this.franquia.setId(1);
		}
		
		try{
			
			listaAunciante();
			
		} catch(Exception e){
			
		}
	}
	
	private void autenticacao() throws IOException{
		
		franquia = (Franquia) contexto.getExternalContext().getSessionMap().get("franquia");
		if(franquia == null){
			
			ExternalContext contextoExterno = contexto.getExternalContext();
			contextoExterno.redirect("/eventt-controller-v2/jsf/login/login.jsf");
			return;
		}
		anunciante.setIdFranquia(franquia.getId());
	}
	
	private void listaAunciante() throws SQLException{
		
		listaTodosAnunciante = anuncianteDAO.listaTodosAnunciante(anunciante);
	}
	
	public void carregaDadosAnuncianteSelecionado() throws SQLException{
		
		int id = anunciante.getId();
		anunciante = anuncianteDAO.listaTudoAnunciante(id);
		listaAnuncio = anuncioDAO.listaTudoAnuncio(id);
	}

	public Date getDataAtual() {
		return dataAtual;
	}

	public void setDataAtual(Date dataAtual) {
		this.dataAtual = dataAtual;
	}

	public Anunciante getAnunciante() {
		return anunciante;
	}

	public void setAnunciante(Anunciante anunciante) {
		this.anunciante = anunciante;
	}

	public List<Anunciante> getListaTodosAnunciante() {
		return listaTodosAnunciante;
	}

	public void setListaTodosAnunciante(List<Anunciante> listaTodosAnunciante) {
		this.listaTodosAnunciante = listaTodosAnunciante;
	}

	public Anuncio getAnuncio() {
		return anuncio;
	}

	public void setAnuncio(Anuncio anuncio) {
		this.anuncio = anuncio;
	}

	public List<Anuncio> getListaAnuncio() {
		return listaAnuncio;
	}

	public void setListaAnuncio(List<Anuncio> listaAnuncio) {
		this.listaAnuncio = listaAnuncio;
	}
}